package com.结构型模式.桥接模式;

import javax.swing.*;
import java.awt.*;

/**
 * 实现化的角色
 * 颜色接口
 */
interface Color{
    String getColor();
}
/**
 * 具体实现化角色 黄色
 */
class Yello implements Color{

    @Override
    public String getColor() {
        return "我很黄";
    }
}
/**
 * 具体实现化角色 红色
 */
class Red implements Color{
    @Override
    public String getColor() {
        return "我很红";
    }
}

/**
 * 抽象化角色
 * 包
 */
abstract class Bag{
    protected Color color;
    void setColor(Color color){
        this.color = color;
    }
    abstract String getName();
}

/**
 * 扩展抽象化角色
 * 挎包
 */
class HandBag extends Bag{
    @Override
    String getName() {
        return "我是一个挎包"+color.getColor();
    }



}
/**
 * 扩展抽象化角色
 * 钱包
 */
class Wallet extends Bag{
    @Override
    String getName() {
        return "我是一个钱包"+color.getColor();
    }


}

/**
 * 橋接模式
 */
public class Bridging {
    public static void show(String name)
    {
        JFrame jf=new JFrame("桥接模式测试");
        Container contentPane=jf.getContentPane();
        JPanel p=new JPanel();
        JLabel l=new JLabel(new ImageIcon("src/img/"+name+".jpg"));
        p.setLayout(new GridLayout(1,1));
        p.setBorder(BorderFactory.createTitledBorder("女士皮包"));
        p.add(l);
        contentPane.add(p, BorderLayout.CENTER);
        jf.pack();
        jf.setVisible(true);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        Color color;
        color = new Red();
        Bag bag;
        bag = new HandBag();
        bag.setColor(color);
        System.out.println(bag.getName());
        show("redHandBag");
        color = new Yello();
        bag = new Wallet();
        bag.setColor(color);
        System.out.println(bag.getName());
        show("yellowWallet");
    }
}
